// let Fly = require("flyio/dist/npm/wx")
import Fly from "flyio/dist/npm/wx"
let fly = new Fly

//设置超时
fly.config.timeout = 300000;
//设置请求基地址
fly.config.baseURL = 'http://127.0.0.1:9230';

// 添加请求拦截器
fly.interceptors.request.use((request) => {
    // 给所有请求添加自定义header，带上token信息让服务器验证用户登陆
    let token = uni.getStorageSync('token');
    request.headers['Authorization'] = token;

    // 为POST请求设置正确的Content-Type
    if (request.method === 'POST') {
        request.headers['Content-Type'] = 'application/json';
    }

    // 在当前页面显示导航条加载动画
    uni.showNavigationBarLoading();
    return request;
})
// 添加响应拦截器，响应拦截器会在then/catch处理之前执行
fly.interceptors.response.use(
    (response) => {
        if (response.data.code != 200) {
            if (response.data.code == 600 || response.data.msg == '请登陆') {
                // token已过期
                uni.removeStorageSync('token');
                uni.showToast({
                    title: '当前登录过期，请重新登录',
                    icon: 'none',
                });
            } else {
                uni.showToast({
                    title: response.data.msg,
                    icon: 'none',
                });
            }

        }
        uni.hideNavigationBarLoading()
        return response.data; //请求成功之后将返回值返回
    },
    (err) => {
        // 在当前页面隐藏导航条加载动画
        uni.hideNavigationBarLoading()

        if (err.status === 0) {
            uni.showToast({
                title: '网络请求延时',
                icon: "none",
            });
            return Promise.reject(err);
        }
        let code = err.response.status;
        if (code === 401) {
            uni.navigateTo({
                url: "/pages/login/login"
            });
        } else if (code === 403) {
            uni.showToast({
                title: '没有权限',
                icon: "none",
            });
            return Promise.reject(err);
        } else {
            uni.showToast({
                title: err.response.data.message,
                icon: "none",
            });
            return Promise.reject(err);
        }
    }
)
export default fly;

